﻿using MCP.BL;
using MCP.Data.Client;
using System;
using System.Collections.Generic;

namespace MCP.Model.Repositories.Interfaces
{
    public interface ICategoryRepository : IDisposable
    {
        /// <summary>
        /// Gets all categories for current user.
        /// </summary>
        /// <returns>All user's categories.</returns>
        OperationResult<List<Category>> GetUserCategories();

        /// <summary>
        /// Gets categories with IDs.
        /// </summary>
        /// <param name="clientCategories">List of categories names.</param>
        /// <returns>Categories with ID</returns>
        OperationResult<List<Category>> GetCategoriesByNames(IEnumerable<string> clientCategories);

        /// <summary>
        /// Adds new categories to DB if they not exist.
        /// </summary>
        /// <param name="categories">Collection of categories names</param>
        /// <returns>Operation result.</returns>
        OperationResult PatchCategories(IEnumerable<string> categories);

		/////// <summary>
		/////// Adds new categories to DB if they not exist.
		/////// </summary>
		/////// <param name="item">Item with categories to patch.</param>
		/////// <returns>Operation result.</returns>
		////OperationResult PatchCategories(Item item);
    }
}